In a computer system, an operating system (OS) performs functions such as scheduling application programs and resolving conflicts among applications that request access to the same resources. Moreover, operating systems communicate service requests from application programs to the hardware device drivers. Operating system examples include WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS NT, and LINUX.
Firmware is a set of hardware setup programs. Firmware is typically stored in flash memory or read only memory. Firmware includes programs that are somewhat analogous to device drivers, which are used to activate the hardware of a standard computer system. A computer may include hardware for performing operations such as reading keystrokes from a keyboard, transmitting information to a video display, or sending information to a printer.
FIG. 1 depicts a flowchart of a firmware update process. The process begins in operation 100 with a firmware update request. Once the process is initiated, the OS is shut down in operation 110. The system is then rebooted in operation 120. Following reboot, a Basic Input/Output System (BIOS) Power On Self-Test (POST) diagnostic that performs hardware tests is executed in operation 130. After DOS or an equivalent OS is booted in operation 135, the firmware update utility is then executed in operation 140 in order to update the firmware. The system is then rebooted again in operation 150. The POST code is run again in operation 160. Finally, the operation system and computer system applications are loaded in operation 170.
Because updating firmware requires that the system be shutdown and rebooted, the process can take as long as 10 minutes. The firmware update process takes even longer for multiple systems connected to a network since each system is serially updated. In addition, because the memory used to store firmware is typically not write protected, firmware is susceptible to tampering.
Other systems update the firmware after the operating system is running. These systems typically utilize System Management Interrupts (SMI) while the OS is running. SMI works fine under desktop operating systems such as WINDOWS 95 and WINDOWS 98, but causes instability under multiprocessor operating systems like WINDOWS 2000 and WINDOWS NT. Moreover, SMI is incompatible with Intel® ITANIUM processor family platforms. Thus, a secure method to perform computer system updates on Intel® ITANIUM processor family platforms and desktop and multiprocessor operating systems would be desirable.